package com.hzc.springchan.service;

import com.auth0.jwt.interfaces.Claim;

import java.util.Map;

/**
 * token颁发/校验服务接口
 * @author chen990627
 * @date 2022/10/16
 */
public interface ITokenService {

    /**
     * 生成token
     *
     * @param map
     * @param mapIdentKey
     * @return
     */
    String generate(Map<String, String> map, String mapIdentKey);

    /**
     * 校验token
     *
     * @param token
     * @param mapIdentKey
     * @return
     */
    void validate(String token, String mapIdentKey);

    /**
     * 获取token对应的PayLoad信息
     *
     * @param token
     * @return
     */
    Map<String, Claim> getClaims(String token);

    /**
     * 获取token参数
     *
     * @param token
     * @param param
     * @param clazz
     * @param <T>
     * @return
     */
    <T> T getValue(String token, String param, Class<T> clazz, String mapIdentKey);

    /**
     * 使token失效
     *
     * @param token
     * @param mapIdentKey
     */
    void expire(String token, String mapIdentKey);
}
